package com.yueyang.sojourn.server.service.sojourn.transaction;

import com.yueyang.sojourn.server.model.po.SojournTransaction;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 交易
 * @author Andy.yang
 * @version v1
 * @summary
 * @Copyright (c) 2019, YueYang Group All Rights Reserved.
 * @since 2020/3/23
 */
@Mapper
public interface SojournTransactionMapper {
    /**
     * 创建交易
     * @param transaction
     * @return
     */
    Long insert(SojournTransaction transaction);

    /**
     * 编辑交易
     * @param transaction
     * @return
     */
    int update(SojournTransaction transaction);

    /**
     * 更新预支付id和预支付人（预支付人就是支付人）
     * @param transaction
     * @return
     */
    int updateThirdPrepayId(SojournTransaction transaction);

    /**
     * 修改交易状态
     * @param id
     * @return
     */
    int delete(@Param("id") Long id, @Param("version") Long version ,@Param("updator") Long updator);

    /**
     * 查询交易
     * @param id
     * @return
     */
    SojournTransaction selectByPrimaryKey(Long id);

    /**
     * 根据订单号查询付款交易
     * @param orderSn
     * @return
     */
    SojournTransaction findPayByOrderSn(@Param("orderSn") String orderSn);


    /**
     * 根据退款单号查询退款交易
     * @param refundSn
     * @return
     */
    SojournTransaction findRefundByOrderRefundSn(@Param("refundSn") String refundSn);

    /**
     * 根据订单号查询正在退款（未完成的退款）款交易（一个订单同一时间只有一个正在退款；复用）；
     * @param orderSn      订单号号
     * @return
     */
    SojournTransaction findRefundingByOrderSn(@Param("orderSn") String orderSn);

    /**
     *  查询交易列表
     * @param creator
     * @return
     */
    List<SojournTransaction> findBy(@Param("creator") Long creator, @Param("status") Integer status);
}
